﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common;

namespace Entidades.jSON
{
    /// <summary>
    /// Clase para mapear el contenido de un objeto Usuario
    /// </summary>
    [Serializable]
    public class UsuarioInfo
    {
        #region Constructores

        /// <summary>
        /// Constructor por default
        /// </summary>
        public UsuarioInfo()
        {
        }

        /// <summary>
        /// Construye un objeto UsuarioInfo a partir de un Usuario
        /// </summary>
        /// <param name="usuario"></param>
        public UsuarioInfo(Usuario usuario)
        {
            this.Id                 = usuario.Id;

            this.Activo             = usuario.Activo == true ? 1 : 0;
            this.Apellido           = usuario.Apellido;
            this.Categoria          = usuario.Categoria != null ? usuario.Categoria.Nombre : string.Empty;
            this.Email              = usuario.Email;
            this.IdCategoria        = usuario.Categoria != null ? usuario.Categoria.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.IdTipo             = usuario.Tipo != null ? usuario.Tipo.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.IdTipoDocumento    = usuario.TipoDocumento != null ? usuario.TipoDocumento.Id : WellKnownKeys.Entities.DEFAULT_ID;
            this.Nombre             = usuario.Nombre;
            this.NombreUsuario      = usuario.NombreUsuario;
            this.Password           = usuario.Password;
            this.TipoDocumento      = usuario.TipoDocumento.IsNotNull() ? usuario.TipoDocumento.Nombre : String.Empty;
            this.Telefono           = usuario.Telefono;
            this.Celular            = usuario.Celular;
            this.Tipo               = usuario.Tipo != null ? usuario.Tipo.Nombre : string.Empty;
            this.NroDocumento       = usuario.NroDocumento;
            this.CUIT               = usuario.CUIT;
            this.Banco              = usuario.Banco;
            this.Foto               = usuario.Foto != null && usuario.Foto.Length != 0 ? Formatter.Base64.ConvertirEnBase64(usuario.Foto) : "";
            this.NroMatricula       = usuario.NroMatricula;
        }

        #endregion

        #region Propiedades

        /// <summary>
        /// Id (PK)
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// Nombre de Usuario
        /// </summary>
        public string NombreUsuario { get; set; }

        /// <summary>
        /// Password
        /// </summary>
        public string Password { get; set; }

        /// <summary>
        /// Id de Tipo de Usuario
        /// </summary>
        public int IdTipo { get; set; }

        /// <summary>
        /// Id de Tipo de Documento
        /// </summary>
        public int IdTipoDocumento { get; set; }

        /// <summary>
        /// Tipo de Documento
        /// </summary>
        public string TipoDocumento { get; set; }

        /// <summary>
        /// Tipo de Usuario
        /// </summary>
        public string Tipo { get; set; }

        /// <summary>
        /// Id de Categoría de Usuario
        /// </summary>
        public int IdCategoria { get; set; }

        /// <summary>
        /// Categoría de Usuario
        /// </summary>
        public string Categoria { get; set; }

        /// <summary>
        /// Nombre
        /// </summary>
        public string Nombre { get; set; }

        /// <summary>
        /// Apellido
        /// </summary>
        public string Apellido { get; set; }

        /// <summary>
        /// _
        /// </summary>
        public string Telefono { get; set; }

        /// <summary>
        /// Celular
        /// </summary>
        public string Celular { get; set; }

        /// <summary>
        /// Email
        /// </summary>
        public string Email { get; set; }

        /// <summary>
        /// Nro. Documento
        /// </summary>
        public string NroDocumento { get; set; }

        /// <summary>
        /// Número de Matrícula
        /// </summary>
        public string NroMatricula { get; set; }

        /// <summary>
        /// CUIT
        /// </summary>
        public string CUIT { get; set; }

        /// <summary>
        /// Banco
        /// </summary>
        public string Banco { get; set; }

        /// <summary>
        /// Foto
        /// </summary>
        public string Foto { get; set; }

        /// <summary>
        /// Activo
        /// </summary>
        public int Activo { get; set; }

        #endregion
    }
}
